#ifndef Trans3_H_
#define Trans3_H_
#include "../../SAMA_Function.h"

enum Trans3_BeyondRan_Sta
{
	Trans3_Normal,
	Trans3_Beyond
};
enum Trans3_ChangeAM
{
	Trans3_Hold,
	Trans3_Change_MAN
};

enum Trans3_WorkMode
{
	Trans3_AUTO,
	Trans3_PV1_Out,
	Trans3_PV2_Out,
	Trans3_PV3_Out
};


enum Trans3_OutMode
{
	Trans3_Average,
	Trans3_Max,
	Trans3_Min,
	Trans3_Middle
};
typedef struct {
	Trans3_WorkMode Work_Mode;
	Trans3_OutMode Out_Mode;

	float Alert_Range;
	float Alert_Dead;
	float Safe_OutValue;
}Trans3_Par_t;

typedef struct {
	bool AIfLink[3];					//< 记录模拟量输入的有效测点

}Trans3_Sta_t;

struct Trans3_T
{
	Model_Base_t Base;		//< 模块基本参数结构体
	Trans3_Par_t Par;		//< 模块可调参数结构体
	Trans3_Sta_t Sta;		//< 模块运算中间参数结构体
};


extern Trans3_T* Trans3_t;


bool CALCU_SAMA(Trans3)(Model_Base_t* arg, float dt, bool* DI, bool* DO, float* AI, float* AO);		//< SAMA运算函数
int BC_PARA(Trans3)(Model_Base_t* arg, void** Data);													//< 广播SAMA参数变量函数（无参数需要广播的模块直接将BCPara函数设置为NULL即可）
int BAK_STA(Trans3)(Model_Base_t* arg, void** Data);													//< 备份SAMA运算中间参数
int ANA_STA(Trans3)(Model_Base_t* arg, void** Data);													//< 解析备份的SAMA运算中间参数
int CHANGE_PAR(Trans3)(Model_Base_t* arg, void** Data);												//< 在线修改模块参数函数
void INIT_STAPAR(Trans3)(Model_Base_t* arg);															//< 初始化模块运算中间参数


#endif
